/****************************************************
 * Description: DAO for 用户
 * Copyright:   Copyright (c) 2013
 * Company:     beiwaionline
 * @author      bfsu
 * @version     1.0
 * @see
	HISTORY
    *  2013-08-08 bfsu Create File
**************************************************/

package com.bfsuolframework.security.dao;

import java.util.List;

import com.bfsuolframework.security.entity.BaseUser;
import com.bfsuolframework.core.controller.support.Pagination;
import com.bfsuolframework.core.dao.DAO;

public interface BaseUserDAO extends DAO<BaseUser> {
	
    /**
     * 通过 角色主键 查询 用户
     * @param 角色主键
     * @return 用户 集合
     */
    public List<BaseUser> findUsersByRoleId(Long roleId);

    /**
     * 通过 用户组主键 查询 用户
     * @param 用户组主键
     * @return 用户 集合
     */
    public List<BaseUser> findUsersByGroupId(Long groupId);


    /**
     * 校验邮箱唯一性
     * @param email
     * @param id 创建新用户时，id设为null
     * @return true是不唯一  false是唯一
     */
    public Boolean checkEmail(String email, Long id);
    
    
    /**
     * 校验用户名唯一性
     * @param LoginName
     * @param id 创建新用户时，id设为null
     * @return true是不唯一  false是唯一
     */
    public Boolean checkLoginName(String loginName, Long id);

	/**
	 * 根据用户组ID查询属于（或不属于）该用户组的用户集合（查询条件：名字模糊查询，登录名精确查询，Email模糊查询）（带分页）
	 * @param name
	 * @param loginName
	 * @param email
	 * @param page
	 * @return
	 */
	public List<BaseUser> findUserByGroup(String name, String loginName,
                                          String email, Long groupId, Pagination page, boolean isBelong);

	/**
	 * 根据用户组ID查询属于（或不属于）该用户组的用户总量
	 * @param name
	 * @param loginName
	 * @param email
	 * @param groupId
	 * @param page
	 * @return
	 */
	public int getUserCountByGroup(String name, String loginName, String email,
                                   Long groupId, Pagination page, boolean isBelong);

	/**
	 * 根据loginName查询user
	 * @param loginName
	 * @return
	 */
	public BaseUser getUserByLoginName(String loginName);
}
